// 导入api
import {GetCart,AddCart,DelCart,UpdateCart} from '@/api/cart.js'
export default{
	state:{
		goods:[],//商品列表
	},
	mutations:{
		// 设置商品列表信息
		SET_GOODS(state,data){
			state.goods = data;
		}
	},
	getters:{
		checkAll(state){
			// 如果每个被选中了，说明全选
			return state.goods.every(item=>item.sel);
		},
		// 计算总件数与总价格
		// 选中的总件数
		totalCount(state){
			var n = 0;
			state.goods.forEach(item=>{
				// 如果是选中的加数量
				if(item.sel){
					n+=item.num*1;
				}
				
			})
			return n;
		},
		totalPrice(state){
			var n = 0;
			state.goods.forEach(item=>{
				// 如果是选中的加数量
				if(item.sel){
					n+=(item.num*1)*item.price;
				}
			})
			return n;
		}
	},
	actions:{
		// 全选功能的实现
		selectAll(context,data){
			// 01 购物车所有的数据的sel值都执行更新
			// console.log(context.state.goods)
			// 遍历所有的上面，更改sel值
			context.state.goods.forEach(item=>{
				item.sel = data;
				// 发送更新命名到后端
				context.dispatch("updateCart",item);
				
			})
		},
		// 修改购物车
		updateCart(context,data){
			UpdateCart(data)
			.then(res=>{
				if(res.data.code===0){
					console.log("修改成功")
				}else{
					console.log("修改失败")
				}
			})
			.catch(err=>{
				console.log(err,"网络错误")
			})
		},
		// 删除购物车车
		delCart(context,id){
			var flag = window.confirm("确定要删除吗？");
			if(flag){
				DelCart(id)
				.then(res=>{
					if(res.data.code===0){
						alert("删除成功");
						// 删除成功重新拿到购物车数据
						context.dispatch("getCart");						
					}else{
						alert("删除失败")
					}
				})
				.catch(err=>{
					console.log(err,"删除失败");
				})
			}
		},
		// 添加购物车动作
		addCart(context,data){
			AddCart(data)
			.then(res=>{
				//重新获取获取购物车
				if(res.data.code===0){
					context.dispatch("getCart")
				}else{
					alert("添加失败")
				}
			})
			.catch(err=>{
				console.log(err,"网络失败")
			})
		},
		// 获取商品列表（网络）
		getCart(context){
			// 网络请求
			GetCart()
			.then(res=>{
				if(res.data.code===0){
					// 更新vuex状态
					context.commit("SET_GOODS",res.data.data)
				}else{
					alert("获取失败")
				}
			})
			.catch(err=>{
				console.log(err,"网络失败")
			})
		}
	}	
}